﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Tibet.GUI.Contrato;
using Tibet.Logica.FabricaLogica;
using Tibet.Entidades;
using System.Web.UI.WebControls;
using Tibet.Logica.Comandos;
using Tibet.Logica.Comandos.ComandoMotorRegla;
using Tibet.Entidades.FabricaEntidades;
using Tibet.Logica.Excepciones;


namespace Tibet.GUI.Presentador
{
    public class PresentadorCrearPerfilReglas
    {
        #region Atributos
         
        private IContratoCrearPerfilReglas _vista;
        Entidad regla = FabricaEntidades.ObtenerRegla();       
        #endregion

        #region Constructores
        /// <summary>
        /// Constructor que inicializa el atributo vista
        /// </summary>
        /// <param name="">Objeto de tipo Interfaz</param>
        public PresentadorCrearPerfilReglas(IContratoCrearPerfilReglas vista)
        {
             _vista = vista;
        }
         #endregion

        #region
        String llaveS = "Llaves en la misma linea";
        String llaveN = "Llaves en linea nueva";
        String boilerS = "Tiene Boilerplate";
        String boilerN = "No Tiene Boilerplate";
        String espacioOpeS = "Tiene espacio entre operadores";
        String espacioOpeN = "No tiene espacio entre operadores";
        String espacioPareS = "Tiene espacio entre parentesis";
        String espacioPareN = "No tiene espacio entre parentesis";
        String campoDefault = "No aplica";
        #endregion

        #region Cargar

        /// <summary>
        /// Carga todos los combos con las opciones de reglas existentes, por tipos de regla
        /// </summary>
        public void CargarDatos()
        {
            _vista.error = "";     
            try
            {
                Comando comando = FabricaComandoRegla.ObtenerComandoConsultarReglasPorNombre();

                llenarNombreClase(comando);
                llenarNombreAtributo(comando);
                llenarNombreMetodo(comando);
                llenarNombrePaquete(comando);
                llenarDocumentClase(comando);
                llenarDocumentEstructura(comando);
                llenarDocumentMetodo(comando);
                llenarNombreInterfaces(comando);
                llenarCheck(comando, _vista.Nombre.ToString());

            }
            catch (ExcepcionConsultarPerfilRegla e)
            {
                _vista.error = e.Message.ToString();
            }
        }

        /// <summary>
        /// llena al combobox BuscarPerfilReglas con
        /// todos los perfiles existentes
        /// </summary>
        public void llenarBuscarPerfilRegla()
        {
            Comando comando = FabricaComandoPerfilReglas.ObtenerComandoConsultarTodosPerfiles();
            comando.Ejecutar();
            _vista.BuscarPerfilReglas.DataSource = comando.ListaEntidad; //as ConsultarTodosPerfiles)
            _vista.BuscarPerfilReglas.DataTextField = "NombrePerfilRegla";
            _vista.BuscarPerfilReglas.DataValueField = "IdPerfilRegla";
            _vista.BuscarPerfilReglas.DataBind();
        }

        /// <summary>
        /// llena al combobox NombreDeClase con todos
        /// las reglas exitentes de tipo "Nombre de clase"
        /// </summary>
        /// <param name="comando"></param>
        public void llenarNombreClase(Comando comando)
        {
            comando.Cadena ="Nombre de clase";
            comando.Ejecutar();
            _vista.NombreDeClase.DataSource = comando.ListaEntidad;
            _vista.NombreDeClase.DataTextField = "nombreRegla";
            _vista.NombreDeClase.DataValueField = "IdRegla";
            _vista.NombreDeClase.DataBind();
        }

        /// <summary>
        /// llena al combobox NombreDeAtributo con todos las
        /// reglas exitentes de tipo "Nombre de atributo"
        /// </summary>
        /// <param name="comando"></param>
        public void llenarNombreAtributo(Comando comando)
        {
            comando.Cadena = "Nombre de atributo";
            comando.Ejecutar();
            _vista.NombreDeAtributo.DataSource = comando.ListaEntidad;
            _vista.NombreDeAtributo.DataTextField = "nombreRegla";
            _vista.NombreDeAtributo.DataValueField = "IdRegla";
            _vista.NombreDeAtributo.DataBind();
        }

        /// <summary>
        /// llena al combobox NombreDeMetodo con todos las 
        /// reglas exitentes de tipo "Nombre de metodo"
        /// </summary>
        /// <param name="comando"></param>
        public void llenarNombreMetodo(Comando comando)
        {
            //llenar el DropDownList
            comando.Cadena = "Nombre de metodo";
            comando.Ejecutar();
            _vista.NombreDeMetodo.DataSource = comando.ListaEntidad;
            _vista.NombreDeMetodo.DataTextField = "nombreRegla";
            _vista.NombreDeMetodo.DataValueField = "IdRegla";
            _vista.NombreDeMetodo.DataBind();
        }

        /// <summary>
        /// llena al combobox NombreDePaquete con todos las 
        /// reglas exitentes de tipo "Nombre de paquete"
        /// </summary>
        /// <param name="comando"></param>
        public void llenarNombrePaquete(Comando comando)
        {
            comando.Cadena = "Nombre de paquete";
            comando.Ejecutar();
            _vista.NombreDePaquete.DataSource = comando.ListaEntidad;
            _vista.NombreDePaquete.DataTextField = "nombreRegla";
            _vista.NombreDePaquete.DataValueField = "IdRegla";
            _vista.NombreDePaquete.DataBind();
        }

        /// <summary>
        /// llena al combobox DocumentacionClase con todos 
        /// las reglas exitentes de tipo "Documentacion de clase"
        /// </summary>
        /// <param name="comando"></param>
        public void llenarDocumentClase(Comando comando)
        {
            comando.Cadena = "Documentacion de clase";
            comando.Ejecutar();
            _vista.DocumentacionClase.DataSource = comando.ListaEntidad;
            _vista.DocumentacionClase.DataTextField = "nombreRegla";
            _vista.DocumentacionClase.DataValueField = "IdRegla";
            _vista.DocumentacionClase.DataBind();
        }

        /// <summary>
        /// llena al combobox DocumentacionEstructura con todos 
        /// las reglas exitentes de tipo "Documentacion de estructura"
        /// </summary>
        /// <param name="comando"></param>
        public void llenarDocumentEstructura(Comando comando)
        {
            comando.Cadena = "Documentacion de estructura";
            comando.Ejecutar();
            _vista.DocumentacionEstructura.DataSource = comando.ListaEntidad;
            _vista.DocumentacionEstructura.DataTextField = "nombreRegla";
            _vista.DocumentacionEstructura.DataValueField = "IdRegla";
            _vista.DocumentacionEstructura.DataBind();
        }

        /// <summary>
        /// llena al combobox DocumentacionMetodo con todos 
        /// las reglas exitentes de tipo "Documentacion de metodo"
        /// </summary>
        /// <param name="comando"></param>
        public void llenarDocumentMetodo(Comando comando)
        {
            comando.Cadena = "Documentacion de metodo";
            comando.Ejecutar();
            _vista.DocumentacionMetodo.DataSource = comando.ListaEntidad;
            _vista.DocumentacionMetodo.DataTextField = "nombreRegla";
            _vista.DocumentacionMetodo.DataValueField = "IdRegla";
            _vista.DocumentacionMetodo.DataBind();
        }

        /// <summary>
        /// llena al combobox NombreDeInterface con todos 
        /// las reglas exitentes de tipo "Nombre de interface"
        /// </summary>
        /// <param name="comando"></param>
        public void llenarNombreInterfaces(Comando comando)
        {
            comando.Cadena = "Nombre de interface";
            comando.Ejecutar();
            _vista.NombreDeInterface.DataSource = comando.ListaEntidad;
            _vista.NombreDeInterface.DataTextField = "nombreRegla";
            _vista.NombreDeInterface.DataValueField = "IdRegla";
            _vista.NombreDeInterface.DataBind();
        }
        #endregion

        #region Crear
        public void CrearPerfilDeReglas(int idUsuario)
        {
            
            Comando comando = FabricaComandoPerfilReglas.ObtenerComandoCrearPerfilRegla();//crea el perfil
            Comando comando1 = FabricaComandoPerfilReglas.ObtenerComandoCrearPerfilReglaRegla();//asigna reglas al perfil
            Comando comando2 = FabricaComandoRegla.ObtenerComandoConsultarReglaPorNombreId();//obtiene los id de las reglas
            Comando validar = FabricaComandoPerfilReglas.ObtenerComandoValidarNombrePerfilRegla();
            try
            {
                validar.Cadena = _vista.Nombre;
                validar.Ejecutar();

                //debo validar si ya existe un perfil con ese nombre
                //se encarga de crear el prefil de regla con el nombre del perfil y el id de usuario
                comando.Cadena = _vista.Nombre;
                comando.Id = idUsuario;
                comando.Ejecutar();//(comando as CrearPerfilRegla).Ejecutar(_vista.Nombre, idUsuario);

                comando1.Cadena = _vista.Nombre;
                comando1.Id = int.Parse(_vista.NombreDeClase.SelectedValue);
                comando1.Ejecutar();

                comando1.Cadena = _vista.Nombre;
                comando1.Id = int.Parse(_vista.NombreDeAtributo.SelectedValue);
                comando1.Ejecutar();

                comando1.Cadena = _vista.Nombre;
                comando1.Id = int.Parse(_vista.NombreDeInterface.SelectedValue);
                comando1.Ejecutar();

                comando1.Cadena = _vista.Nombre;
                comando1.Id = int.Parse(_vista.NombreDeMetodo.SelectedValue);
                comando1.Ejecutar();

                comando1.Cadena = _vista.Nombre;
                comando1.Id = int.Parse(_vista.NombreDePaquete.SelectedValue);
                comando1.Ejecutar();

                comando1.Cadena = _vista.Nombre;
                comando1.Id = int.Parse(_vista.DocumentacionClase.SelectedValue);
                comando1.Ejecutar();

                comando1.Cadena = _vista.Nombre;
                comando1.Id = int.Parse(_vista.DocumentacionEstructura.SelectedValue);
                comando1.Ejecutar();
                
                comando1.Cadena = _vista.Nombre;
                comando1.Id = int.Parse(_vista.DocumentacionMetodo.SelectedValue);
                comando1.Ejecutar();
                
                CrearCheck(comando2, comando1);                 
                _vista.error = "El perfil ha sido creado con éxito!";
                _vista.campo = "verdad";
                                       
            }
            catch (ExcepcionConsultarPerfilRegla er)
            {
                _vista.error = er.Message;
            }
            catch (ExcepcionCrearPerfilRegla ec)
            {
                _vista.error = ec.Message;
            }
            catch (Exception e)
            {
                Console.WriteLine("Error");
            }
        }

        /// <summary>
        /// agrega las reglas de los checkbox seleccionados
        /// </summary>
        /// <param name="comando2">obtiene los id de las reglas</param>
        /// <param name="comando1">agrega la regla al perfil ya creado</param>
        public void CrearCheck(Comando comando2,  Comando comando1)
        {
            try
            {
                int idRegla = 0; 
                if (_vista.Llave.Checked == true)//debo validar si este ejecutar devuelve el id de la regla, si no debo dar una excepcion              
                { 
                    comando2.Cadena = llaveS;
                    comando2.Ejecutar();//llaves al final de la linea 
                    idRegla = comando2.Id; 
                }                                 
                else
                {
                    comando2.Cadena = llaveN;
                    comando2.Ejecutar();//llaves no al final de la linea 
                    idRegla = comando2.Id;
                }
 
                comando1.Cadena = _vista.Nombre;
                comando1.Id = idRegla;
                comando1.Ejecutar();
                   

                if (_vista.DocumentacionBoilerplate.Checked == true)
                {
                    comando2.Cadena = boilerS;
                    comando2.Ejecutar();//llaves al final de la linea 
                    idRegla = comando2.Id;
                } 
                else
                {
                    comando2.Cadena = boilerN;
                    comando2.Ejecutar();//llaves al final de la linea 
                    idRegla = comando2.Id;
                }

                comando1.Cadena = _vista.Nombre;
                comando1.Id = idRegla;
                comando1.Ejecutar();
                    

                if (_vista.EspacioDeOperadores.Checked == true)
                {
                    comando2.Cadena = espacioOpeS;
                    comando2.Ejecutar();//llaves al final de la linea 
                    idRegla = comando2.Id;
                } 
                else
                {
                    comando2.Cadena = espacioOpeN;
                    comando2.Ejecutar();//llaves al final de la linea 
                    idRegla = comando2.Id;
                }
              
                comando1.Cadena = _vista.Nombre;
                comando1.Id = idRegla;
                comando1.Ejecutar();
                     

                if (_vista.EspacioDeParentesis.Checked == true)
                {
                    comando2.Cadena = espacioPareS;
                    comando2.Ejecutar();//llaves al final de la linea 
                    idRegla = comando2.Id;
                }
                else
                {
                    comando2.Cadena = espacioPareN;
                    comando2.Ejecutar();//llaves al final de la linea 
                    idRegla = comando2.Id;
                }
            
                comando1.Cadena = _vista.Nombre;
                comando1.Id = idRegla;
                comando1.Ejecutar();
                   
            }
            catch (ExcepcionConsultarPerfilRegla er)
            {
                _vista.error = er.Message;
            }
            catch (ExcepcionCrearPerfilRegla ec)
            {
                _vista.error = ec.Message;
            }
            catch (Exception e)
            {
                Console.WriteLine("Error");
            } 
            
        }

        #endregion

        #region Copiar

        /// <summary>
        /// metodo del evento del boton copiar, que permite copiar los valores de un perfil
        /// existente sin modificarle las reglas y cambiandole el nombre del perfil
        /// </summary>
        /// <param name="idUsuario"></param>
        public void CopiarPerfilRegla(int idUsuario)
        {
            CrearPerfilDeReglas(idUsuario);
            
        }

        /// <summary>
        /// llena todos los campos que se puerden copiar del perfil
        /// </summary>
        /// <param name="idPerfilRegla"></param>
        /// <param name="nombre"></param>
        public void llenarCopiarPerfilRegla(int idPerfilRegla, String nombre)
        {

            Comando comando = FabricaComandoPerfilReglas.ObtenerComandoConsultarReglaPorPerfil();
            try 
             {
                _vista.Nombre = nombre;
                _vista.PerfilPorDefecto.Enabled = false;
                _vista.Llave.Enabled = false;
                _vista.EspacioDeOperadores.Enabled = false;
                _vista.EspacioDeParentesis.Enabled = false;
                _vista.DocumentacionBoilerplate.Enabled = false;
                _vista.DocumentacionClase.Enabled = false;
                _vista.DocumentacionEstructura.Enabled = false;
                _vista.DocumentacionMetodo.Enabled = false;
                _vista.NombreDeAtributo.Enabled = false;
                _vista.NombreDeClase.Enabled = true;
                _vista.NombreDeInterface.Enabled = false;
                _vista.NombreDeMetodo.Enabled = false;
                _vista.NombreDePaquete.Enabled = false;

                llenarNombreClaseC(comando, nombre);
                llenarNombreMetodoC(comando, nombre);
                llenarNombrePaqueteC(comando, nombre);
                llenarNombreAtributoC(comando, nombre);
                llenarNombreInterfacesC(comando, nombre);
                llenarDocumentMetodoC(comando, nombre);
                llenarDocumentEstructuraC(comando, nombre);
                llenarDocumentClaseC(comando, nombre);
                llenarCheck(comando, nombre);
            }
            catch (ExcepcionConsultarPerfilRegla er)
            {
                _vista.error = er.Message;
            }
            catch (Exception e)
            {
                Console.WriteLine("Error");
            } 

        }

        /// <summary>
        /// llena al textbox NombreDeClase con 
        /// la regla de tipo "Nombre de clase" que fue asiganada a este perfil
        /// </summary>
        /// <param name="comando">comando para buscar en ese perfil la regla tipo "Nombre de clase"</param>
        /// <param name="nombre">nombre del perfil</param>
        public void llenarNombreClaseC(Comando comando, String nombre)
        {
            try 
            {
                comando.Cadena = nombre;
                comando.Tipo = "Nombre de clase";
                comando.Ejecutar();
                       
                if (comando.Entidad != null)
                {
                   _vista.Clase.Text = (comando.Entidad as EntidadRegla).NombreRegla;

                }
                else
                {
                    _vista.Clase.Text = campoDefault;
              
                }
                _vista.Clase.Enabled = false;
            }
            catch (ExcepcionConsultarPerfilRegla er)
            {
                _vista.error = er.Message;
            }
            catch (Exception e)
            {
                Console.WriteLine("Error");
            } 
        }

        /// <summary>
        /// llena al textbox NombreDeAtributo con 
        /// la regla de tipo "Nombre de atributo" que fue asiganada a este perfil
        /// </summary>
        /// <param name="comando">comando para buscar en ese perfil la regla tipo "Nombre de atributo"</param>
        /// <param name="nombre">nombre del perfil</param>
        public void llenarNombreAtributoC(Comando comando, String nombre)
        {
            try 
            {
                comando.Cadena = nombre;
                comando.Tipo = "Nombre de atributo";
                comando.Ejecutar();

                if (comando.Entidad != null)
                {
                   _vista.Atributo.Text = (comando.Entidad as EntidadRegla).NombreRegla;

                }
                else
                {
                    _vista.Atributo.Text = campoDefault;
              
                }
                _vista.Atributo.Enabled = false;
            }
            catch (ExcepcionConsultarPerfilRegla er)
            {
                _vista.error = er.Message;
            }
            catch (Exception e)
            {
                Console.WriteLine("Error");
            }             
        }

        /// <summary>
        /// llena al textbox NombreDeMetodo con 
        /// la regla de tipo "Nombre de metodo" que fue asiganada a este perfil
        /// </summary>
        /// <param name="comando">comando para buscar en ese perfil la regla tipo "Nombre de metodo"</param>
        /// <param name="nombre">nombre del perfil</param>
        public void llenarNombreMetodoC(Comando comando, String nombre)
        {
            
            try 
            {
                comando.Cadena = nombre;
                comando.Tipo = "Nombre de metodo";
                comando.Ejecutar();

                if (comando.Entidad != null)
                {
                    _vista.NMetodo.Text = (comando.Entidad as EntidadRegla).NombreRegla;

                }
                else
                {
                    _vista.NMetodo.Text = campoDefault;

                }
                _vista.NMetodo.Enabled = false;
            }
            catch (ExcepcionConsultarPerfilRegla er)
            {
                _vista.error = er.Message;
            }
            catch (Exception e)
            {
                Console.WriteLine("Error");
            }  
        }

        /// <summary>
        /// llena al textbox NombreDePaquete con 
        /// la regla de tipo "Nombre de paquete" que fue asiganada a este perfil
        /// </summary>
        /// <param name="comando">comando para buscar en ese perfil la regla tipo "Nombre de paquete"/param>
        /// <param name="nombre">nombre del perfil</param>
        public void llenarNombrePaqueteC(Comando comando, String nombre)
        {
            try 
            {
                comando.Cadena = nombre;
                comando.Tipo = "Nombre de paquete";
                comando.Ejecutar();
                if (comando.Entidad != null)
                {
                    _vista.Paquete.Text = (comando.Entidad as EntidadRegla).NombreRegla;

                }
                else
                {
                    _vista.Paquete.Text = campoDefault;

                }
                _vista.Paquete.Enabled = false;
            }
            catch (ExcepcionConsultarPerfilRegla er)
            {
                _vista.error = er.Message;
            }
            catch (Exception e)
            {
                Console.WriteLine("Error");
            }
        }

        /// <summary>
        /// llena al textbox DocumentacionClase con todos
        /// la regla de tipo "Documentacion de clase" que fue asiganada a este perfil
        /// </summary>
        /// <param name="comando">comando para buscar en ese perfil la regla tipo "Documentacion de clase"/param>
        /// <param name="nombre">nombre del perfil</param>
        public void llenarDocumentClaseC(Comando comando, String nombre)
        {
            try 
            {
                comando.Cadena = nombre;
                comando.Tipo = "Documentacion de clase";
                comando.Ejecutar();
                if (comando.Entidad != null)
                {
                    _vista.DClase.Text = (comando.Entidad as EntidadRegla).NombreRegla;

                }
                else
                {
                    _vista.DClase.Text = campoDefault;

                }
                _vista.DClase.Enabled = false;
            }
            catch (ExcepcionConsultarPerfilRegla er)
            {
                _vista.error = er.Message;
            }
            catch (Exception e)
            {
                Console.WriteLine("Error");
            }
        }

        /// <summary>
        /// llena al textbox DocumentacionEstructura con todos
        /// la regla de tipo "Documentacion de estructura" que fue asiganada a este perfil
        /// </summary>
        /// <param name="comando">comando para buscar en ese perfil la regla tipo "Documentacion de estructura"/param>
        /// <param name="nombre">nombre del perfil</param>
        public void llenarDocumentEstructuraC(Comando comando, String nombre)
        {
            try 
            {
                comando.Cadena = nombre;
                comando.Tipo = "Documentacion de estructura";
                comando.Ejecutar();
                if (comando.Entidad != null)
                {
                    _vista.DEstructura.Text = (comando.Entidad as EntidadRegla).NombreRegla;

                }
                else
                {
                    _vista.DEstructura.Text = campoDefault;

                }
                _vista.DEstructura.Enabled = false;
            }
            catch (ExcepcionConsultarPerfilRegla er)
            {
                _vista.error = er.Message;
            }
            catch (Exception e)
            {
                Console.WriteLine("Error");
            }
        }

        /// <summary>
        /// llena al textbox DocumentacionMetodo con 
        /// la regla de tipo "Documentacion de metodo" que fue asiganada a este perfil
        /// </summary>
        /// <param name="comando">comando para buscar en ese perfil la regla tipo "Documentacion de metodo"/param>
        /// <param name="nombre">nombre del perfil</param>
        public void llenarDocumentMetodoC(Comando comando, String nombre)
        {
            try 
            {
                _vista.NombreDeClase.Items.Clear();
                comando.Cadena = nombre;
                comando.Tipo = "Documentacion de metodo";
                comando.Ejecutar();
                if (comando.Entidad != null)
                {
                    _vista.DMetodo.Text = (comando.Entidad as EntidadRegla).NombreRegla;

                }
                else
                {
                    _vista.DMetodo.Text = campoDefault;

                }
                _vista.DMetodo.Enabled = false;
            }
            catch (ExcepcionConsultarPerfilRegla er)
            {
                _vista.error = er.Message;
            }
            catch (Exception e)
            {
                Console.WriteLine("Error");
            }
            
        }

        /// <summary>
        /// llena al textbox NombreDeInterface con 
        /// la regla de tipo "Documentacion de interface" que fue asiganada a este perfil
        /// </summary>
        /// <param name="comando">comando para buscar en ese perfil la regla tipo "Documentacion de interface"/param>
        /// <param name="nombre">nombre del perfil</param>
        public void llenarNombreInterfacesC(Comando comando, String nombre)
        {
            try 
            {
                comando.Cadena = "Documentacion de interface";
                comando.Ejecutar();
                if (comando.Entidad != null)
                {
                    _vista.Interfaz.Text = (comando.Entidad as EntidadRegla).NombreRegla;

                }
                else
                {
                    _vista.Interfaz.Text = campoDefault;

                }
                _vista.Interfaz.Enabled = false;
            }
            catch (ExcepcionConsultarPerfilRegla er)
            {
                _vista.error = er.Message;
            }
            catch (Exception e)
            {
                Console.WriteLine("Error");
            }
            
        }

        /// <summary>
        /// llena los checkbox con los tipos de reglas correspondientes
        /// </summary>
        /// <param name="comando">comando para buscar en ese perfil la regla tipo "Documentacion de interface"/param>
        /// <param name="nombre">nombre del perfil</param>
        public void llenarCheck(Comando comando, String nombre)
        {
            try 
            {
                comando.Cadena = nombre;//nombre, boilerS
                comando.Tipo = boilerS;
                comando.Ejecutar();           
                if (comando.Entidad != null)
                    _vista.DocumentacionBoilerplate.Checked = true;
                else
                    _vista.DocumentacionBoilerplate.Checked = false;

                comando.Cadena = nombre;//nombre, boilerS
                comando.Tipo = espacioOpeS;
                comando.Ejecutar();
                if (comando.Entidad != null)
                    _vista.EspacioDeOperadores.Checked = true;
                else
                    _vista.EspacioDeOperadores.Checked = false;

                comando.Cadena = nombre;//nombre, boilerS
                comando.Tipo = espacioPareS;
                comando.Ejecutar();
                if (comando.Entidad != null)
                    _vista.EspacioDeParentesis.Checked = true;
                else
                    _vista.EspacioDeParentesis.Checked = false;

                comando.Cadena = nombre;//nombre, boilerS
                comando.Tipo = llaveS;
                comando.Ejecutar();
                if (comando.Entidad != null)
                    _vista.Llave.Checked = true;
                else
                    _vista.Llave.Checked = false;

            }
            catch (ExcepcionConsultarPerfilRegla er)
            {
                _vista.error = er.Message;
            }
            catch (Exception e)
            {
                Console.WriteLine("Error");
            }

        }

        #endregion
      
        #region Limpiar
        /// <summary>
        /// Para limpiar los valores en la interfaz
        /// </summary>
        public void Limpiar()
        {
            _vista.error = "";
            _vista.NombreDeClase.Items.Clear();
            _vista.NombreDeAtributo.Items.Clear();
            _vista.NombreDeMetodo.Items.Clear();
            _vista.NombreDeInterface.Items.Clear();
            _vista.NombreDePaquete.Items.Clear();
            _vista.DocumentacionClase.Items.Clear();
            _vista.DocumentacionEstructura.Items.Clear();
            _vista.DocumentacionMetodo.Items.Clear();
            _vista.DocumentacionBoilerplate.Checked = false;
            _vista.Llave.Checked = false;
            _vista.EspacioDeOperadores.Checked = false;
            _vista.EspacioDeParentesis.Checked = false;
            _vista.Nombre = String.Empty;
            _vista.Clase.Text = String.Empty;
            _vista.DClase.Text = String.Empty;
            _vista.DEstructura.Text = String.Empty;
            _vista.DMetodo.Text = String.Empty;
            _vista.Atributo.Text = String.Empty;
            _vista.Interfaz.Text = String.Empty;
            _vista.NMetodo.Text = String.Empty;
            _vista.Paquete.Text = String.Empty;
            visibleTextBox(false);
            visibleDropDownlist(true);
        }
        
        /// <summary>
        /// Para hacer visible o invisible todos los textbox de la interfaz
        /// </summary>
        /// <param name="ver"></param>
        public void visibleTextBox(bool ver)
        {
           _vista.Clase.Visible = ver;
           _vista.DClase.Visible = ver;
           _vista.DEstructura.Visible = ver;
           _vista.DMetodo.Visible = ver;
           _vista.Atributo.Visible = ver;
           _vista.Interfaz.Visible = ver;
           _vista.NMetodo.Visible = ver;
           _vista.Paquete.Visible = ver;
        }

        /// <summary>
        /// Para hacer visible o invisible todos los dropdownlist de la interfaz
        /// </summary>
        /// <param name="ver"></param>
        public void visibleDropDownlist(bool ver)
        {
            _vista.NombreDeClase.Visible = ver;
            _vista.NombreDeInterface.Visible = ver;
            _vista.NombreDeMetodo.Visible = ver;
            _vista.NombreDePaquete.Visible = ver;
            _vista.DocumentacionMetodo.Visible = ver;
            _vista.DocumentacionEstructura.Visible = ver;
            _vista.DocumentacionClase.Visible = ver;
            _vista.NombreDeAtributo.Visible = ver;
        }
        #endregion
    }
}